package com.allen.app.common.config.aspect;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * Description: 重复请求切面控制
 *
 * @author Limiaojun
 * @date 2019/8/1 15:36
 **/
@Target({ElementType.METHOD,ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ManyRequest {

    /**
     * 锁名称。支持SpEL(例如：'字符串:'+#paramName)
     *
     */
    String name() default "'default'";

    /**
     * redis自动失效时间 默认三秒
     */
    long leaseTime() default 3 * 1000;

    /**
     * 时间格式 默认：毫秒
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /**
     *
     * 注解生效开关
     */
    boolean enabled() default true;
}